<?php
/**
 * ClassArr 通用的工厂方法调用类库
 * Created by Veyron
 * motto:现在的拼搏 为了更好的明天
 * day:  2020/1/20
 * Time: 22:32
 */

namespace app\common\lib;

class ClassArr
{
    public static function smsClassStat(){
        return [
            'ali'   =>'app\common\lib\sms\AliSms',
            'test'  => 'app\common\lib\sms\TestSms',
        ];
    }
    public static function initClass($type, $classs, $params=[], $needInsctance = false){
        // 如果工厂调用的是静态方法，返回这个类库 AliSms
        // 如果工厂调用的不是静态方法，返回对象
        if(!array_key_exists($type,$classs)){
            return false;
        }
        $className = $classs[$type];
        //需要实例化 使用反射机制进行实例化
        return $needInsctance == true ? (new \ReflectionClass($className))->newInstanceArgs($params) : $className;
    }
}
